package com.hsp.single_;

/*
演示懒汉式单例模式
 */
public class SingleTon02 {
    public static void main(String[] args) {
//        System.out.println(Cat.n1);
        Cat instance = Cat.getInstance();
        System.out.println(instance);
    }
}

//希望在程序运行过程中只能创建一个cat对象
//使用单例模式
class Cat{
    private String name;
    public static int n1 = 999;
    private static Cat cat;//默认是null

    //步骤
    //1. 仍然将构造器私有化
    //2. 定义一个静态属性
    //3. 提供一个公共的public的static方法，可以返回一个cat对象
    //4. 懒汉式。只有当用户使用getInstance时，才返回cat对象，后面再次调用时，会反悔上次创建的对象
    //   从而保证了单例
    private Cat(String name) {
        System.out.println("构造器被调用");
        this.name = name;
    }

    public static Cat getInstance() {
        if (cat == null) {//如果还没有创建猫
            cat = new Cat("小可爱");
        }
        return cat;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}
